package com.temp.config;

import io.minio.MinioClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;

@Data
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {

    /**
     * MinIO服务器地址 (包含http/https)
     */
    private String endpoint;

    /**
     * 访问密钥
     */
    private String accessKey;

    /**
     * 秘密密钥
     */
    private String secretKey;

    /**
     * 默认存储桶名称
     */
    private String bucketName;

    /**
     * 区域名称
     */
    private String region;

    /**
     * 最大文件大小 (默认10MB)
     */
    private DataSize maxFileSize = DataSize.ofMegabytes(50);

    /**
     * 连接超时时间 (毫秒)
     */
    private long connectTimeout = 30000;

    /**
     * 写入超时时间 (毫秒)
     */
    private long writeTimeout = 60000;

    /**
     * 读取超时时间 (毫秒)
     */
    private long readTimeout = 60000;

    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .region(region)
                .build();
    }

    /**
     * 获取最大文件大小(字节)
     */
    public long getMaxFileSize() {
        return maxFileSize.toBytes();
    }
}